# -*- coding: utf-8 -*-

import base
from registradorException import RegistradorException

class Registrador(object):
    def __init__(self, barramento, ponto_controle):
        self._valor = base.TAM*'0'
        self.barramento = barramento
        self.ponto_controle = ponto_controle
    
    def _get_valor(self):
        return self._valor

    def _set_valor(self,  valor):
        self._checa_bin(valor)
        if len(valor) < base.TAM :
            falta = base.TAM - len(valor)
            valor = '0'*falta + valor
        self._valor = valor
        
    def _checa_bin(self, valor):
        valor = valor.replace('1','')
        valor = valor.replace('0','')
        if len(valor) > 0:
            raise RegisterException(valor)
    
    def clock(self):
        if self.ponto_controle.flag == '1':
            self._set_valor(self.barramento.valor)
    
    valor = property(fget = _get_valor, fset = _set_valor)
